package com.deercrowing.takeaway.service;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.deercrowing.takeaway.entity.SetmealsEntity;
import com.deercrowing.takeaway.vo.DishesItemVO;
import com.deercrowing.takeaway.vo.SetmealsPageVO;
import com.deercrowing.takeaway.vo.SetmealsVO;

import java.util.List;

/**
 * 套餐表(Setmeal)表服务接口
 *
 * @author guoyongxiang
 * @since 2024-07-11 14:34:12
 */
public interface SetmealsService extends IService<SetmealsEntity> {

    void compareByContext(SetmealsVO setmealsVO, Integer isAddOrUpdate/* 1、新增 2、更改 */);

    /**
     * 变更套餐起售\停用状态
     *
     * @param status
     * @param id
     */
    void setmealStatusUpdate(Short status, Integer id);

    /**
     * 根据搜索条件搜索信息
     *
     * @param setmealsPageVO
     * @return
     */
    IPage<SetmealsVO> serachByCondition(SetmealsPageVO setmealsPageVO);

    /**
     * 根据ID查找实体类并转换视图类
     *
     * @param id
     * @return
     */
    SetmealsVO selectById(Long id);

    /**
     * 根据ID批量删除信息
     *
     * @param idList
     */
    void deleteById(List<Long> idList);

    /**
     * 根据分类ID查找套餐及套餐菜品关系数量（用户端）
     *
     * @param categoryId
     * @return
     */
    List<SetmealsVO> selectSetmalWithDish(Short categoryId);

    /**
     * 根据套餐ID查找绑定菜品信息
     *
     * @param setmealId
     * @return
     */
    List<DishesItemVO> selectDishBySetmealId(Integer setmealId);

    /**
     * 更新数据至数据库
     *
     * @param id
     * @param setmealsVO
     */
    void updateInfoToDB(Long id, SetmealsVO setmealsVO);

    /**
     * 新增数据
     *
     * @param setmealsVO
     */
    void insertInfoToDB(SetmealsVO setmealsVO);
}

